#pragma once

#include "fxcc/core/graph/common/pch.h"
#include "fxcc/core/graph/common/Type.h"

namespace fxcc
{
	namespace graph
	{
		namespace common
		{
			struct FXCC_API  Texture2DArrayJack :public fxcc::Base
            {
				struct Desc
				{
					std::string m_DDSPath;

					enum Type
					{
						_DDS_,
					} m_Type = _DDS_;

					bool SetDDSPath(const std::string& p)
					{
						m_DDSPath = p;
						m_Type = Type::_DDS_;
						return fs::exists(p);
					}
					fxcc::graph::common::SamplerType m_SamplerType{ fxcc::graph::common::SamplerType::_sampler_2d_array_default };
				} m_Desc;

				Texture2DArrayJack() = default;

				Texture2DArrayJack(const Desc& desc):m_Desc(desc)
                {
				}
				std::vector<std::shared_ptr<fxcc::graph::common::Texture2DJack>> m_Textures;

				fxcc::graph::common::ImageMipmap::MipMapData m_MipmapConfig;

				void ResizeTextures()
				{
					m_Textures.resize(m_MipmapConfig.m_Depth);
				}

				virtual void SetShader(int index) const { assert("failed set shader"); }

            };

		}
	}
}